package cn.pupil.springframework.beans.factory;

import cn.pupil.springframework.beans.BeansException;
import cn.pupil.springframework.beans.factory.config.AutowireCapableBeanFactory;
import cn.pupil.springframework.beans.factory.config.BeanDefinition;
import cn.pupil.springframework.beans.factory.config.ConfigurableBeanFactory;

/**
 * @Description: 配置列表Bean工厂接口，提供分析和修改Bean以及预先实例化的操作接口
 * @Author: pupil
 * @Date: 2024/11/4 下午 8:37
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {
    /**
     * 获取bean定义
     *
     * @param beanName
     * @return
     * @throws BeansException
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 预先实例化单例
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;
}
